// 封装一个倒计时的逻辑函数

/**
 * 实现步骤
 * 1. 先不管具体的逻辑 先实现函数结构
 * 2. 分析核心思路 然后定位到解决问题的关键步骤
 * 3. 根据关键步骤 逐个解决问题
 *
 * 核心思路：每隔1s time减一
 * 解决手段： 写个定时器 time--  -> vueuse 提供给我们一个函数
 *
 *
 * 格式化：时间  dayjs
 *
 */
import { computed, ref } from 'vue'
import { useIntervalFn } from '@vueuse/core'
import dayjs from 'dayjs'
function useCountDown () {
  // 倒计时数据
  const time = ref(0)
  const formatTime = computed(() => {
    return dayjs.unix(time.value).format('mm分ss秒')
  })
  // 执行函数
  // pause：函数 用来暂停重复执行的逻辑
  // resume: 函数  用来开始进行重复的逻辑
  // 回调函数: 如果想每隔1s做一个事情就把自己的逻辑代码放到your function的位置
  const { pause, resume } = useIntervalFn(() => {
    /* your function */
    // 最多到0就停止
    // 如果我们用的是return的写法 只能控制我们不执行--逻辑 回调还会不断执行
    // 如果我们用的是pause方法 彻底停止我们的定时器 整个回调函数都不会重复执行
    if (time.value === 1) {
      pause()
    }
    time.value--
  }, 1000)
  // 开始倒计时
  function start (count) {
    // 先初始化
    time.value = count
    // 再开始倒计时
    resume()
  }
  // 暂停倒计时
  function stop () {
    pause()
  }
  return {
    time,
    start,
    stop,
    formatTime
  }
}

export default useCountDown
